<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="zh" lang="zh">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="DC.Type" content="concept"/>
<meta name="DC.Title" content="索引保存的内容"/>
<meta name="DC.subject" content="Apache, Lucene, 原理, 代码, OSSEZ, OSS 计算技术"/>
<meta name="keywords" content="Apache, Lucene, 原理, 代码, OSSEZ, OSS 计算技术"/>
<meta name="DC.Relation" scheme="URI" content="../../tasks/chapter01/chapter01.html"/>
<meta name="prodname" content="Lucene 指南"/>
<meta name="version" content="1.0.0.0"/>
<meta name="brand" content="OSSEZ APACHE LUCENE"/>
<meta name="copyright" content="OSSEZ (中国) 信息技术有限公司 2006, 2012" type="primary"/>
<meta name="DC.Rights.Owner" content="OSSEZ (中国) 信息技术有限公司 2006, 2012" type="primary"/>
<meta name="DC.Format" content="XHTML"/>
<meta name="DC.Identifier" content="chapter01"/>
<meta name="DC.Language" content="zh"/>
<link rel="stylesheet" type="text/css" href="../../css/commonltr.css"/>
<link rel="stylesheet" type="text/css" href="../../css/public.css"/>
<title>索引保存的内容</title>
<svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/constants.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/diagram.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/sequence.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/loop.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/decision.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/revdecision.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/boxed.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/unboxed.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/text.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/void.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/notecontainer.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/note.js"/><svg:script xmlns:syntaxdiagram-svg="http://www.moldflow.com/2006/syntaxdiagram-svg" xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" type="text/ecmascript" xlink:href="../../js/main.js"/><link rel="stylesheet" type="text/css" href="css/syntaxdiagram.css"/></head>
<body id="chapter01">


  <h1 class="title topictitle1">索引保存的内容</h1>

  
  <div class="body conbody">
    <p class="p">索引里面究竟需要存些什么呢？
为什么顺序扫描的速度慢。</p>

    <p class="p">其实是由于我们想要搜索的信息和非结构化数据中所存储的信息不一致造成的。</p>

    <p class="p">非结构化数据中所存储的信息是每个文件包含哪些字符串，也即已知文件，欲求字符串相对容易，也即是从文件到字符串的映射。而我们想搜索的信息是哪些文件包含此字符串，也即已知字符串，欲求文件，也即从字符串到文件的映射。两者恰恰相反。于是如果索引总能够保存从字符串到文件的映射，则会大大提高搜索速度。</p>

    <p class="p">由于从字符串到文件的映射是文件到字符串映射的反向过程，于是保存这种信息的索引称为【反向索引】。</p>

    <p class="p">反向索引的所保存的信息一般如下：</p>

    <p class="p">假设我的文档集合里面有100 篇文档，为了方便表示，我们为文档编号从1 到100，得到下面的结构。</p>

    <p class="p"><img class="image" src="../../images/chapter01_01_01.png" alt="文档索引"/></p>

    <p class="p">左边保存的是一系列字符串，称为词典。</p>

    <p class="p">每个字符串都指向包含此字符串的文档(Document)链表，此文档链表称为倒排表(Posting List)。</p>

    <p class="p">有了索引，便使保存的信息和要搜索的信息一致，可以大大加快搜索的速度。</p>

    <p class="p">比如说，我们要寻找既包含字符串“lucene”又包含字符串“solr”的文档，我们只需要以下几步：</p>

    <div class="p"><ol class="ol">
        <li class="li">取出包含字符串“lucene”的文档链表。</li>

        <li class="li">取出包含字符串“solr”的文档链表。</li>

        <li class="li">通过合并链表，找出既包含“lucene”又包含“solr”的文件。</li>

      </ol>
</div>

    <p class="p"><img class="image" src="../../images/chapter01_01_02.png" alt="索引合并查询"/></p>

    <p class="p">看到这个地方，有人可能会说，全文检索的确加快了搜索的速度，但是多了索引的过程，两者加起来不一定比顺序扫描快多少。</p>

    <p class="p">的确，加上索引的过程，全文检索不一定比顺序扫描快，尤其是在数据量小的时候更是如此。而对一个很大量的数据创建索引也是一个很慢的过程。</p>

    <p class="p">然而两者还是有区别的，顺序扫描是每次都要扫描，而创建索引的过程仅仅需要一次，以后便是一劳永逸的了，每次搜索，不需要重新创建索引，仅仅检索已创建好的索引就可以了。</p>

    <p class="p">这也是全文搜索相对于顺序扫描的优势之一：一次索引，多次使用。</p>

    <p class="p"><a class="xref" href="http://www.ossez.com/forum.php?mod=viewthread&amp;tid=18359&amp;fromuid=426" target="_blank">http://www.ossez.com/forum.php?mod=viewthread&amp;tid=18359&amp;fromuid=426</a></p>

  </div>

<div class="related-links">
<div class="familylinks">
<div class="parentlink"><strong>父主题：</strong> <a class="link" href="../../tasks/chapter01/chapter01.html">基本原理</a></div>
</div>
</div>

</body>
</html>